﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NUnit.Framework;
using vudu.Datos.SqlServer;
using vudu.ClasesDominio;
using vudu.Logica.Fachada;

namespace vudu.Pruebas
{
    [TestFixture]
    public class PruebaEscuela
    {
        [Test]
        public void PruebaAgregarEscuela()
        {
            // Verificacion Caso Bueno
            // se crea el objeto de tipo escuela para caso bueno
            Escuela unaEscuela = new Escuela("Escuela de Prueba","Descripcion de la escuela de prueba","02124074407","Susana Garcia","Montalban",1);
            Escuela unaEscuela2 = new Escuela("Escuela de Prueba", "Descripcion de la escuela de prueba", "02124074407", "Susana Garcia", "Montalban", 1);
            EnlaceLogico fachada = new EnlaceLogico();
            int agregar = fachada.AgregarEscuela(unaEscuela, "Universidad Catolica Andres Bello");

            // se crea una nueva escuela que servira de comparacion

            //verifico que el valor de retorno de InsertarEscuela sea mayor que 0 (0 es valor de retorno nulo)
            Assert.Greater(agregar,0);

            // Verificacion Caso Malo
            // se crea el objeto de tipo escuela para caso malo
            int agregarMala = fachada.AgregarEscuela(unaEscuela, "Universidad Catolica Andres Bello");

            //se comprueba que lo devuelto es 0 (valor de retorno nulo) para el caso malo
            Assert.AreEqual(0, agregarMala);
            fachada.EliminarEscuela(agregar);
        }


        [Test]
        public void PruebaConsultarListaEscuela()
        {
            // creo un string con el nombre de la universidad 
            string nombreUniversidad = "Universidad Catolica Andres Bello";
            // creo un objeto para poder llamar al metodo
            EnlaceLogico fachada = new EnlaceLogico();
            // creo una lista de escuelas y llamo al metodo que me listas las escuelas por universidad
            List<Escuela> miListaEscuelas =fachada.ConsultarListaEscuela(nombreUniversidad);
            
                //verifico que la lista no este en null
                Assert.IsNotNull(miListaEscuelas);
                //verifico que la lista no este vacia
                Assert.IsNotEmpty(miListaEscuelas);
                //verifico que al contar la lista de mas de cero
                Assert.AreNotEqual(miListaEscuelas.Count, 0);
       
        }

        [Test]
        public void PruebaModificarEscuela()
        {
            //creo un objeto de la clase escuela y le asigno valores a los atributos
            Escuela unaEscuela = new Escuela("Escuela de Modificar", "Descripcion de la escuela modificar", "02124074407", "Susana Garcia", "Montalban", 1);
            Escuela unaEscuela2 = new Escuela();
            EnlaceLogico fachada = new EnlaceLogico();
            int agregar = fachada.AgregarEscuela(unaEscuela, "Universidad Catolica Andres Bello");

       
            // asigno el id que devolvio la insercion al objeto con el que vamos a comparar el update
            unaEscuela2.IdEscuela = agregar;
            // cambio los valores de los atributos
            unaEscuela2.NombreEscuela = "Escuela de Modificar BIEN";
            unaEscuela2.DescripcionEscuela = "Descripcion de la escuela modificar BIEN";
            unaEscuela2.TelefonoEscuela = "0000000000";
            unaEscuela2.DirectorEscuela = "Susana Garcia BIEN";
            unaEscuela2.DireccionEscuela = "Montalban BIEN";

            
            int modificar = fachada.ModificarEscuela(unaEscuela2, "Universidad Catolica Andres Bello");
            Assert.Greater(modificar, 0);
            int idEscuelaMal = fachada.ModificarEscuela(unaEscuela, "");

            Assert.AreEqual(0, idEscuelaMal);
            fachada.EliminarEscuela(unaEscuela2.IdEscuela);

        }
       
        [Test]
        public void PruebaEliminarEscuelaTrue()
        {
            Escuela nuevaEscuela = new Escuela("Escuela de prueba","prueba","02123456789","Director de prueba","Direccion de prueba",1);
            EnlaceLogico fachada = new EnlaceLogico();
            int agregar = fachada.AgregarEscuela(nuevaEscuela, "Universidad Catolica Andres Bello");
            List<Escuela> listaDeEscuelas = fachada.ConsultarListaEscuela("Universidad Catolica Andres Bello");
            int idEscuela = listaDeEscuelas[listaDeEscuelas.Count-1].IdEscuela;
            bool eliminada = fachada.EliminarEscuela(idEscuela);
            Assert.IsTrue(eliminada);
           
        }

        [Test]
        public void PruebaEliminarEscuelaFalse()
        {
            EnlaceLogico fachada = new EnlaceLogico();
            bool eliminada = fachada.EliminarEscuela(1);
            Assert.AreNotEqual(eliminada, true);
         }


    }
}